Our World in Data Scraper avatar

Our World in Data Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Our World in Data Scraper

Our World in Data Scraper

Scrape Our World in Data (ourworldindata.org) - browse articles by topic or keyword, fetch chart data (CSV) by slug, or explore country profiles. Returns article metadata, chart datasets, and country-level statistics from Oxford's Global Change Data Lab.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Scrape Our World in Data — the Oxford/Global Change Data Lab platform covering global trends in health, poverty, climate, education, and more. Extract article metadata, downloadable chart datasets (CSV), and country profiles — all without any API key or credentials.

What You Can Scrape

  • Articles — browse recent research articles with title, authors, publish date, excerpt, thumbnail, and related chart slugs.
  • Chart Data — download the underlying dataset (CSV rows) for any OWID Grapher chart by its slug, with optional country/year filters.
  • Chart Data Bulk — download datasets from multiple charts in one run.
  • Countries — browse country profiles (250+ countries) with name, description, and related charts.

Output Fields

Article records (recordType: "article")

FieldTypeDescription
articleSlugstringURL slug (e.g. climate-change)
titlestringArticle headline
publishedAtstringISO 8601 publish date
updatedAtstringISO 8601 last modified date
authorsarrayList of author names
primaryAuthorstringFirst-listed author
excerptstringShort description / abstract
thumbnailUrlstringArticle cover image URL
relatedChartsarrayGrapher chart slugs referenced in the article
articleUrlstringCanonical article URL
scrapedAtstringUTC timestamp when record was scraped
recordTypestringAlways "article"

Chart config records (recordType: "chartConfig")

FieldTypeDescription
chartSlugstringChart identifier slug
chartIdintegerOWID internal chart ID
titlestringChart title
subtitlestringChart subtitle
notestringChart footnote
chartTypesarrayVisualisation types (e.g. LineChart, ScatterPlot)
citationstringData source attribution
dataColumnsarrayColumn names in the CSV dataset
relatedQuestionUrlsarrayRelated article links
chartUrlstringCanonical Grapher URL

Chart data rows (recordType: "chartDataRow")

FieldTypeDescription
chartSlugstringSource chart identifier
chartTitlestringHuman-readable chart title
entitystringCountry, region, or aggregate name
entityCodestringISO country code (if available)
yearintegerYear of the data point
<variable>numberOne or more data columns (names vary per chart)
sourceUrlstringCanonical chart URL

Country records (recordType: "country")

FieldTypeDescription
countrySlugstringURL slug (e.g. germany)
countryNamestringDisplay name
descriptionstringShort country description
thumbnailUrlstringCountry thumbnail image
relatedChartsarrayGrapher slugs for this country
countryUrlstringCountry profile URL

Input Parameters

ParameterTypeDefaultDescription
modeselectarticlesWhat to scrape: articles, chartData, chartDataBulk, countries
searchQuerystringKeyword filter for article titles/excerpts
topicselectFilter articles by topic area
chartSlugstringChart slug for chartData mode (e.g. life-expectancy)
chartSlugsarrayMultiple slugs for chartDataBulk mode
entitiesarrayFilter chart rows to specific countries/regions
yearFromintegerMinimum year for chart data rows
yearTointegerMaximum year for chart data rows
includeChartConfigbooleantrueEmit a config record before chart data rows
maxItemsinteger100Maximum records to emit

Example Inputs

Browse latest articles about climate change

{
"mode": "articles",
"searchQuery": "climate change",
"maxItems": 20
}

Download life expectancy data for Germany and France (1950–2023)

{
"mode": "chartData",
"chartSlug": "life-expectancy",
"entities": ["Germany", "France"],
"yearFrom": 1950,
"yearTo": 2023,
"maxItems": 500
}

Bulk download multiple charts

{
"mode": "chartDataBulk",
"chartSlugs": ["co2-emissions-vs-gdp", "child-mortality", "global-education"],
"entities": ["World"],
"maxItems": 1000
}

Browse country profiles

{
"mode": "countries",
"searchQuery": "germany",
"maxItems": 10
}

Use Cases

  • Research & academia — download multi-decade global datasets (CO₂, life expectancy, GDP, mortality) for analysis.
  • Journalism — find the latest OWID articles on a topic and enrich stories with chart data.
  • Education — build classroom materials using OWID's curated global statistics.
  • Data pipelines — automate ingestion of specific chart datasets on a schedule.
  • Content discovery — monitor new articles published on specific topics.

Finding Chart Slugs

Chart slugs appear in every OWID chart URL: https://ourworldindata.org/grapher/{slug}.

Popular examples:

  • life-expectancy — Life expectancy at birth (1950–2024)
  • co2-emissions-vs-gdp — CO₂ emissions vs. GDP per capita
  • child-mortality — Child mortality rate by country
  • global-education — Years of schooling
  • share-of-population-in-extreme-poverty — Poverty headcount ratio
  • annual-co-emissions-by-region — Annual CO₂ by region
  • vaccination-coverage-who-unicef — Vaccine coverage

FAQ

Does this require an API key? No. All OWID data is publicly available. No registration or API key is needed.

How many articles are available? OWID publishes 1,900+ articles and research topics. The Atom feed provides the 10 most recent; setting maxItems higher triggers sitemap crawling for older content.

How many chart datasets are available? OWID hosts 3,000+ Grapher charts. Each has a downloadable CSV via the .csv endpoint.

What is the largest chart dataset? Multi-country charts spanning 200+ years can have 50,000+ rows. Use entities and yearFrom/yearTo filters to limit output.

Can I get data for a specific country over time? Yes — use chartData mode with entities: ["Germany"] and yearFrom/yearTo to extract time-series data for a single country.

Is there rate limiting? OWID's public API is politely crawled with 0.3s delays between requests. No API rate limits apply to static CSV/JSON endpoints.